﻿Imports DevExpress.XtraEditors.Controls
Imports DevExpress.Utils
Imports BUS
Imports DTO

Public Class frmThemNguoiDung

    Private dsNhanVien As DataTable
    Private dsNhom As DataTable
    Public Delegate Sub loadLaiUC()
    Public Event suKienTaiLaiUC As loadLaiUC
    Public taiKhoan As String
    Public _Edit As Boolean
    Public nguoiDung As NguoiDungDTO
    Private maND As String
    Private pqNhomND As PhanQuyenNhonNDDTO
    Private pqND As PhanQuyenNhonNDDTO

    Public Sub New(_tk As String, pq As PhanQuyenNhonNDDTO)

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        Me.taiKhoan = _tk
        If _tk = "" Then
            _Edit = False
        Else
            _Edit = True
        End If
        Me.pqND = pq
    End Sub

    Private Sub frmThemNguoiDung_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        dsNhanVien = NhanVienBUS.layDsNhanVien()
        cbxNhanVien.Properties.DataSource = dsNhanVien
        cbxNhanVien.Properties.ValueMember = "Mã Nhân Viên"
        cbxNhanVien.Properties.DisplayMember = "Tên Nhân Viên"
        dsNhom = NhomNDBUS.layDsVaiTro()
        cbxVaiTro.Properties.DataSource = dsNhom
        cbxVaiTro.Properties.DisplayMember = "Tên"
        cbxVaiTro.Properties.ValueMember = "Mã"
        txtTaiKhoan.Select()
        If _Edit = True Then
            nguoiDung = NguoiDungBUS.layThongTinNDBangTaiKhoan(taiKhoan)
            maND = nguoiDung.MaNguoiDung
            txtTaiKhoan.Text = nguoiDung.TaiKhoan
            txtDienGiai.Text = nguoiDung.DienGiai
            cbxNhanVien.EditValue = nguoiDung.MaNhanVien
            cbxVaiTro.EditValue = nguoiDung.MaNhom
            ckbConQL.Checked = nguoiDung.MaTrangThai

        End If
    End Sub



    Private Sub btnDong_Click(sender As Object, e As EventArgs) Handles btnDong.Click
        Me.Close()
    End Sub


    Private Sub cbxVaiTro_ButtonClick(sender As Object, e As ButtonPressedEventArgs) Handles cbxVaiTro.ButtonClick
        pqNhomND = ChucNangBUS.layQuyenCuaND(frmMain.maND, 7)
        If (e.Button.Tag.Equals("btnAddVaiTro") = True) Then
            If pqNhomND.TruyCap = True Then
                Dim frm As New frmThemVaiTro("", pqNhomND)
                frm.ShowDialog()
            Else
                DevExpress.XtraEditors.XtraMessageBox.Show("Bạn không có quyền vào mục này", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning)
            End If
           
        End If
    End Sub

    Private Sub PictureEdit1_MouseHover(sender As Object, e As EventArgs) Handles PictureEdit1.MouseHover
        Dim loca As New Point(MousePosition.X, MousePosition.Y)
        FlyoutPanel1.ShowBeakForm()
    End Sub

    Private Sub txtTaiKhoan_Leave(sender As Object, e As EventArgs) Handles txtTaiKhoan.Leave
      
        If txtTaiKhoan.Text.Length <= 0 Then
            lbLoi.Text = "Vui lòng nhập thông tin"
            Dim loca As New Point(90, 50)
            txtTaiKhoan.Width = 255
            txtTaiKhoan.Location = loca
        Else
            If NguoiDungBUS.kiemTraTrung(txtTaiKhoan.Text) = False Then
                lbLoi.Text = "Tài Khoản này bị trùng"
                Dim loca As New Point(90, 50)
                txtTaiKhoan.Width = 255
                txtTaiKhoan.Location = loca
            Else
                Dim loca As New Point(64, 50)
                txtTaiKhoan.Width = 281
                txtTaiKhoan.Location = loca
            End If
        End If

    End Sub

    Private Sub btnLuu_Click(sender As Object, e As EventArgs) Handles btnLuu.Click
        If checkInPut() Then
            If _Edit = False Then
                If pqND.Them = True Then
                    Dim nd As New NguoiDungDTO
                    nd.MaNhanVien = cbxNhanVien.EditValue.ToString
                    nd.TaiKhoan = txtTaiKhoan.Text
                    nd.MatKhau = txtMatKhau.Text
                    nd.MaNhom = cbxVaiTro.EditValue.ToString
                    nd.MaTrangThai = ckbConQL.Checked
                    nd.DienGiai = txtDienGiai.Text
                    Dim kq As Integer = NguoiDungBUS.themNguoiDung(nd)
                    If kq = 1 Then
                        DevExpress.XtraEditors.XtraMessageBox.Show("Thêm người dùng thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        HeThongBUS.themNhatKy(frmMain.maND, "Hệ Thống", "Thêm Người Dùng", "Thêm Tài Khoản " + nd.TaiKhoan)
                        RaiseEvent suKienTaiLaiUC()
                    Else
                        DevExpress.XtraEditors.XtraMessageBox.Show("Thêm người dùng không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    End If
                Else
                    DevExpress.XtraEditors.XtraMessageBox.Show("Bạn không có quyền thêm", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                End If
                
            Else
                If pqND.Sua = True Then
                    Dim nd As New NguoiDungDTO
                    nd.MaNguoiDung = maND
                    nd.MaNhanVien = cbxNhanVien.EditValue.ToString
                    nd.TaiKhoan = txtTaiKhoan.Text
                    nd.MatKhau = txtMatKhau.Text
                    nd.MaNhom = cbxVaiTro.EditValue.ToString
                    nd.MaTrangThai = ckbConQL.Checked
                    nd.DienGiai = txtDienGiai.Text
                    Dim kq As Integer = NguoiDungBUS.capNhatNguoiDung(nd)
                    If kq = 1 Then
                        DevExpress.XtraEditors.XtraMessageBox.Show("Cập nhật người dùng thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information)
                        HeThongBUS.themNhatKy(frmMain.maND, "Hệ Thống", "Cập nhật người dùng", "Cập nhật người dùng " + nd.TaiKhoan)
                        RaiseEvent suKienTaiLaiUC()
                    Else
                        DevExpress.XtraEditors.XtraMessageBox.Show("Cập nhật người dùng không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error)
                    End If
                Else
                    DevExpress.XtraEditors.XtraMessageBox.Show("Bạn không có quyền sữa", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning)
                End If
               
            End If
        End If
    End Sub

    Private Function checkInPut() As Boolean
        If txtTaiKhoan.Text.Length < 4 Then
            DevExpress.XtraEditors.XtraMessageBox.Show("Tài Khoản không được nhỏ hơn 5 ký tự", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return False
        End If
        If cbxNhanVien.Text.Length <= 0 Then
            DevExpress.XtraEditors.XtraMessageBox.Show("Chưa chọn nhân viên", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return False
        End If
        If cbxVaiTro.Text.Length <= 0 Then
            DevExpress.XtraEditors.XtraMessageBox.Show("Chưa chọn vai trò", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return False
        End If
        If txtMatKhau.Text <> txtXacNhan.Text Then
            DevExpress.XtraEditors.XtraMessageBox.Show("Xác nhận mật khẩu không đúng", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return False
        End If
        If NguoiDungBUS.kiemTraTrung(txtTaiKhoan.Text) = False Then
            DevExpress.XtraEditors.XtraMessageBox.Show("Tài khoảng bị trùng", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error)
            Return False
        End If
        Return True
    End Function

End Class